package main

import (
	"fmt"
	"math"
	"math/rand"
)

// 该包包含一些常量和一些有用的数学计算函数，例如：三角函数、随机数、绝对值、平方根等。
func main() {
	fmt.Printf("float64的最大值是:%.f\n", math.MaxFloat64)
	fmt.Printf("float64的最小值是:%.f\n", math.SmallestNonzeroFloat64)
	fmt.Printf("float32的最大值是:%.f\n", math.MaxFloat32)
	fmt.Printf("float32的最小值是:%.f\n", math.SmallestNonzeroFloat32)
	//取绝对值
	fmt.Printf("-3.14的绝对值：%.2f\n", math.Abs(-3.14)) //3.14

	//*取x的y次方
	fmt.Printf("2的4次方为:%.2f\n", math.Pow(2, 4)) //16

	//取幂
	fmt.Printf("10的3次方为：%.f\n", math.Pow10(3)) //1000

	//取x的开平方,求平方数
	fmt.Printf("64的开平方为：%.f\n", math.Sqrt(64)) //8

	//取x的开立方,求立方数
	fmt.Printf("27的开立方为：%.f\n", math.Cbrt(27)) //3

	//向上取整
	fmt.Printf("3.14向上取整：%.f\n", math.Ceil(3.14)) //4

	//向下取整
	fmt.Printf("3.64向下取整：%.f\n", math.Floor(3.64)) //3

	//取余
	fmt.Printf("10/3的余数为：%.f\n", math.Mod(10, 3)) //1

	//分别取整数和小数部分
	Inte, Deci := math.Modf(3.14159265358979)
	fmt.Printf("整数为：%.f，小数为：%.14f", Inte, Deci)

	//int类型随机数
	fmt.Println(rand.Int())
	fmt.Printf("rand.int:%d\n", rand.Int)

	//种子,对于random.seed(n)，如果使用相同的n值，则随机数生成函数每次生成的随机数序列都相同；如果不设置这个值，
	//则系统根据时间来自己选择这个值，此时每次生成的随机数序列因时间差异而不同。
	rand.Seed(1)

	//n以内的随机数
	fmt.Println(rand.Intn(5))

	//小数随机数
	fmt.Println(rand.Float64())
}
